home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / windownt / cshx86.zip / SAMPLES / DUPLICAT.CSH < prev    next >
Text File  |  1993-04-14  |  1KB  |  28 lines

  1. #    Look for duplicate files anywhere in a directory tree.
  2.  
  3. #    Copyright (c) 1990 by Hamilton Laboratories.  All rights reserved.
  4.  
  5. #    It works by first constructing the list of all the path names of every-
  6. #    thing in the tree using the -r (recursive) option of ls.  The `...` part
  7. #    is command substitution to paste that result into the foreach loop.  The
  8. #    :gt operator means globally edit the list to trim each pathname down to
  9. #    just the tail part; e.g., given "x\y\z.c", the tail is just "z.c".
  10. #    (There are other pathname editing operators for grabbing just the directory
  11. #    containing, everything except the extension, the fully-qualified name for
  12. #    a relative pathname, etc.)
  13. #    
  14. #    The foreach loop writes each name out to the pipe, one per line.  (I've used
  15. #    a calc statement to do the writing but you could also use an "echo $i".)
  16. #    The sort obviously sorts all the lines alphabetically and uniq -d
  17. #    command gives just the duplicates.
  18. #    
  19. #    The whole operation takes about 2 minutes to search an entire typical
  20. #    (very full) 100 MB HPFS partition.
  21.  
  22. proc duplicat(startdir)
  23.     local i
  24.    foreach i (`ls -r $startdir`:gt) calc i; end | sort | uniq -d
  25. end
  26.  
  27. duplicat $argv
  28.